/**
 * BrandBigData.com Inc.
 * Copyright (c) 2016 All Rights Reserved.
 */
package com.qibao.toolkit.facade;

import com.qibao.toolkit.exception.PythonExecuteException;
import com.qibao.toolkit.exception.PythonSyntaxException;

import java.util.List;

/**
 * python脚本执行服务
 *
 * @author xumin
 * @version $Id:PythonExecutorService.java, v0.1 2017/6/13 14:27 xumin
 */
public interface PythonExecutorService {

    /**
     * 执行python脚本
     *
     * @param script         脚本的内容
     * @param executeContext 执行上下文，里面主要包含脚本执行所需的参数
     * @return 执行结果
     * @throws PythonExecuteException
     */
    String executeScript(String script, ExecuteContext executeContext) throws PythonExecuteException;

    /**
     * 从脚本中抽取所依赖的变量/指标
     *
     * @param script 脚本的内容
     * @return 脚本所依赖的变量/指标
     * @throws PythonSyntaxException
     */
    List<String> extractVariables(String script) throws PythonSyntaxException;

}
